package g11.dao;

import g11.model.Employee;
import g11.model.Patient;
import g11.model.PatientAssignment;

import java.sql.Date;
import java.util.List;

public interface PatientAssignmentDAO {

	public void CreatePatientAssignment(Employee doctor, Patient patient,
			byte permission) throws DAOException;

	public void createPatientAssignmentByAssignment(
			PatientAssignment patientAssignment) throws DAOException;

	public void DeletePatientAssignment(Employee doctor, Patient patient)
			throws DAOException;

	public void deletePatientAssignmentByAssignment(
			PatientAssignment patientAssignment) throws DAOException;

	public byte getPermission(Employee doctor, Patient patient)
			throws DAOException;

	public List<PatientAssignment> getPatientAssignmentByDoctorAndPermission(
			Employee doctor, byte permission) throws DAOException;

	// this method was moved here from PatientDAO
	public List<Patient> getAllPatient(Employee doctor) throws DAOException;

	public List<Patient> getPatientByDoctorReadOnly(Employee doctor)
			throws DAOException;

	public List<Patient> getPatientByDoctorBelongTo(Employee doctor)
			throws DAOException;

	public List<Patient> searchBelongToPatientForDoctor(String doctorId,
			Integer searchType, String searchContent) throws DAOException;

	public List<Patient> searchReadOnlyPatientForDoctor(String doctorId,
			Integer searchType, String searchContent) throws DAOException;

	public List<Patient> searchBelongToPatientForDoctorByLastVisitDate(
			Employee doctor, Date lastVisitDate) throws DAOException;

	public List<Patient> searchReadOnlyPatientForDoctorByLastVisitDate(
			Employee doctor, Date lastVisitDate) throws DAOException;

	public List<Employee> getAllNotAssignedDoctorListForPatient(Patient patient)
			throws DAOException;

	public Integer getDefaultDoctorIdByPatientId(Integer patientId)
			throws DAOException;

}
